package org.dromara.common.social.topiam;

import me.zhyd.oauth.config.AuthSource;
import me.zhyd.oauth.request.AuthDefaultRequest;


/**
 * @Author 刘武贵
 * @Date 2024/8/15 22:00
 * @Description 功能描述：Oauth2 默认接口说明
 */
/**
 * 认证信息来源枚举类
 * 该枚举类定义了不同的认证信息来源渠道，实现了AuthSource接口，用于标识和区分认证信息的来源
 */
public enum AuthTopiamSource implements AuthSource {

    /**
     * 测试
     */
    TOPIAM {
        /**
         * 授权的api
         * 授权操作，返回授权服务的URL
         *
         * @return 授权服务的URL字符串
         */
        @Override
        public String authorize() {
            // 拼接授权服务的URL，此处使用了类变量SERVER_URL作为基础URL，并添加了"/oauth2/auth"作为路径
            return AuthTopIamRequest.SERVER_URL + "/oauth2/auth";
        }

        /**
         * 获取accessToken的api
         * 获取访问令牌的URL
         *
         * @return 访问令牌的URL，用于身份验证
         */
        @Override
        public String accessToken() {
            // 拼接访问令牌的URL，使用常量中的服务器地址
            return AuthTopIamRequest.SERVER_URL + "/oauth2/token";
        }

        /**
         * 获取用户信息的api
         * 获取用户信息的接口URL
         *
         * @return 用户信息接口的URL地址
         */
        @Override
        public String userInfo() {
            return AuthTopIamRequest.SERVER_URL + "/oauth2/userinfo";
        }

        /**
         * 平台对应的 AuthRequest 实现类，必须继承自 {@link AuthDefaultRequest}
         * 获取目标身份验证类
         *
         * @return 继承自AuthDefaultRequest的AuthTopIamRequest类
         */
        @Override
        public Class<? extends AuthDefaultRequest> getTargetClass() {
            return AuthTopIamRequest.class;
        }

    }
}
